import { FormSchema, JCronValidator } from "/@/components/Form"
import { usePermission } from "/@/hooks/web/usePermission"

const { isDisabledAuth } = usePermission()
export const schemas: FormSchema[] = [
  {
    field: "jdst",
    component: "JDictSelectTag",
    label: "性别下拉",
    helpMessage: ["component模式"],
    componentProps: {
      dictType: "sys_user_sex",
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "jdst",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "jdst1",
    component: "JDictSelectTag",
    label: "性别选择",
    helpMessage: ["component模式"],
    componentProps: {
      dictType: "sys_user_sex",
      type: "radioButton",
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "jdst1",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "jdst2",
    component: "JDictSelectTag",
    label: "字典表下拉",
    helpMessage: ["component模式"],
    componentProps: {
      dictType: "sys_user,realname,id",
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "jdst2",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "jdst3",
    component: "JDictSelectTag",
    label: "字典表下拉(带条件)",
    helpMessage: ["component模式"],
    componentProps: {
      dictType: "sys_user,realname,id,username!='admin' order by create_time",
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "jdst3",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "jsst",
    component: "JSearchSelect",
    label: "字典搜索(同步)",
    colProps: { span: 12 },
    componentProps: {
      //dict: "sys_depart,depart_name,id",
      dictOptions: [
        {
          text: "选项一",
          value: "1",
        },
        {
          text: "选项二",
          value: "2",
        },
        {
          text: "选项三",
          value: "3",
        },
      ],
    },
  },
  {
    field: "jsst",
    component: "JEllipsis",
    label: "选择值",
    colProps: { span: 12 },
  },
  {
    field: "jsst2",
    component: "JSearchSelect",
    label: "字典搜索(异步)",
    colProps: { span: 12 },
    componentProps: {
      dict: "sys_depart,depart_name,id",
      pageSize: 6,
      async: true,
    },
  },
  {
    field: "jsst2",
    component: "JEllipsis",
    label: "选择值",
    colProps: { span: 12 },
  },
  {
    field: "xldx",
    component: "JDictSelectTag",
    label: "字典下拉多选",
    colProps: { span: 12 },
    componentProps: {
      dictType: "sys_user_sex",
      mode: "multiple",
    },
  },
  {
    field: "xldx",
    component: "JEllipsis",
    label: "选择值",
    colProps: { span: 12 },
  },
  {
    field: "dxxlk",
    component: "JDictSelectTag",
    label: "字典下拉单选",
    colProps: { span: 12 },
    componentProps: {
      dictType: "sys_user_sex",
    },
  },
  {
    field: "dxxlk",
    component: "JEllipsis",
    label: "选择值",
    colProps: { span: 12 },
  },
  {
    label: "可输入下拉",
    field: "selectInput",
    component: "JSelectInput",
    componentProps: {
      options: [
        { label: "选项一", value: "1" },
        { label: "选项二", value: "2" },
        { label: "选项三", value: "3" },
      ],
    },
    colProps: { span: 12 },
  },
  {
    field: "selectInput",
    component: "JEllipsis",
    label: "选择值",
    colProps: { span: 12 },
  },
  {
    field: "depart3",
    component: "MySelectDept",
    label: "选择部门—自定义值",
    helpMessage: ["component模式"],
    componentProps: { showButton: false, rowKey: "orgCode", primaryKey: "orgCode" },
    colProps: {
      span: 12,
    },
  },
  {
    field: "depart3",
    component: "JEllipsis",
    label: "选中部门",
    colProps: { span: 12 },
  },
  {
    field: "depart2",
    component: "MySelectDept",
    label: "选择部门",
    helpMessage: ["component模式"],
    componentProps: { showButton: false },
    colProps: {
      span: 12,
    },
  },
  {
    field: "depart2",
    component: "JEllipsis",
    label: "选中部门",
    colProps: { span: 12 },
  },
  {
    field: "user2",
    component: "JSelectUser",
    label: "用户选择组件",
    helpMessage: ["component模式"],
    componentProps: {
      labelKey: "realname",
      rowKey: "id",
      showSelectTable: false,
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "user2",
    component: "JEllipsis",
    label: "选中用户",
    colProps: { span: 12 },
  },
  {
    field: "user3",
    component: "JSelectUserByDept",
    label: "部门选择用户",
    helpMessage: ["component模式"],
    componentProps: {
      labelKey: "realname",
      rowKey: "username",
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "user3",
    component: "JEllipsis",
    label: "选中用户",
    colProps: { span: 12 },
  },
  {
    field: "role2",
    component: "JSelectRole",
    label: "角色选择组件",
    helpMessage: ["component模式"],
    colProps: {
      span: 12,
    },
  },
  {
    field: "role2",
    component: "JEllipsis",
    label: "选中角色",
    colProps: { span: 12 },
  },
  {
    field: "position2",
    component: "JSelectPosition",
    label: "职务选择组件",
    helpMessage: ["component模式"],
    colProps: { span: 12 },
    componentProps: { async: true, showSelectTable: true },
  },
  {
    field: "position2",
    component: "JEllipsis",
    label: "选中职务",
    colProps: { span: 12 },
  },
  {
    field: "checkbox1",
    component: "MyCheckbox",
    label: "MyCheckbox组件1",
    helpMessage: ["component模式"],
    defaultValue: "1,2",
    componentProps: {
      options: [
        { label: "男", value: "1" },
        { label: "女", value: "2" },
      ],
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "checkbox1",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "checkbox2",
    component: "Input",
    label: "MyCheckbox组件2",
    defaultValue: "1",
    helpMessage: ["插槽模式"],
    slot: "MyCheckbox",
    colProps: {
      span: 12,
    },
  },
  {
    field: "checkbox2",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "data1",
    label: "日期选择",
    component: "DatePicker",
    componentProps: {
      showTime: true,
      valueFormat: "YYYY-MM-DD HH:mm:ss",
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "data1",
    component: "JEllipsis",
    label: "选中值",
    colProps: {
      span: 12,
    },
  },
  {
    field: "data2",
    label: "年份范围选择",
    component: "RangePicker",
    componentProps: {
      picker: "year",
      valueFormat: "YYYY",
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "data2",
    component: "JEllipsis",
    label: "选中值",
    colProps: {
      span: 12,
    },
  },
  {
    field: "hk",
    component: "Input",
    label: "滑块验证码",
    helpMessage: ["插槽模式"],
    slot: "dargVerify",
    colProps: {
      span: 12,
    },
  },
  {
    field: "hk",
    component: "JEllipsis",
    label: "选中值",
    colProps: {
      span: 12,
    },
  },
  {
    field: "JTreeDict",
    component: "JTreeDict",
    label: "树字典",
    helpMessage: ["component模式"],
    colProps: { span: 12 },
  },
  {
    field: "JTreeDict",
    component: "JEllipsis",
    label: "选中值",
    colProps: {
      span: 12,
    },
  },
  {
    field: "ts",
    component: "JTreeSelect",
    label: "下拉树选择",
    helpMessage: ["component模式"],
    componentProps: {
      dict: "sys_permission,name,id",
      pidField: "parent_id",
      hasChildField: "is_leaf",
      converIsLeafVal: 0,
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "ts",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "ts1",
    component: "JTreeSelect",
    label: "下拉树多选",
    helpMessage: ["component模式"],
    componentProps: {
      dict: "sys_permission,name,id",
      pidField: "parent_id",
      hasChildField: "is_leaf",
      converIsLeafVal: 0,
      multiple: true,
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "ts1",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "category",
    component: "JCategorySelect",
    label: "分类字典树",
    helpMessage: ["component模式"],
    defaultValue: "",
    componentProps: {
      pcode: "B01",
      multiple: true,
    },
    colProps: {
      span: 12,
    },
  },
  {
    field: "category",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "JEasyCron",
    component: "JEasyCron",
    label: "JEasyCron",
    helpMessage: ["component模式"],
    colProps: { span: 12 },
    defaultValue: "* * * * * ? *",
    rules: [{ validator: JCronValidator }],
  },
  {
    field: "JEasyCron",
    component: "JEllipsis",
    label: "选择值",
    colProps: { span: 12 },
  },
  {
    field: "JInput",
    component: "JInput",
    label: "特殊查询组件",
    helpMessage: ["插槽模式"],
    slot: "JInput",
    colProps: {
      span: 12,
    },
  },
  {
    field: "jinputtype",
    component: "Select",
    label: "查询类型",
    componentProps: {
      options: [
        { value: "like", label: "模糊（like）" },
        { value: "ne", label: "不等于（ne）" },
        { value: "ge", label: "大于等于（ge）" },
        { value: "le", label: "小于等于（le)" },
      ],
    },
    colProps: {
      span: 6,
    },
  },
  {
    field: "JInput",
    component: "JEllipsis",
    label: "输入值",
    colProps: { span: 6 },
  },
  {
    field: "field1",
    component: "Select",
    label: "省市区选择",
    helpMessage: ["插槽模式"],
    slot: "jAreaLinkage",
    colProps: {
      span: 12,
    },
    defaultValue: ["130000", "130200"],
  },
  {
    field: "field1",
    component: "JEllipsis",
    label: "选中值",
    colProps: {
      span: 12,
    },
  },
  {
    field: "field0",
    component: "Select",
    label: "禁用组件(方式一)",
    helpMessage: ["插槽模式"],
    slot: "jAreaLinkage1",
    colProps: {
      span: 12,
    },
    defaultValue: ["130000", "130200"],
  },

  {
    field: "field0",
    component: "JEllipsis",
    label: "选中值",
    colProps: {
      span: 12,
    },
  },
  {
    field: "field2",
    component: "JAreaLinkage",
    label: "禁用组件(方式二)",
    helpMessage: ["component模式"],
    colProps: {
      span: 12,
    },
    dynamicDisabled: ({ values }) => {
      console.log(values)
      return isDisabledAuth(["demo.dbarray"])
    },
    defaultValue: ["140000", "140300", "140302"],
  },
  {
    field: "field2",
    component: "JEllipsis",
    label: "选中值",
    colProps: {
      span: 12,
    },
  },
  {
    field: "pca1",
    component: "JAreaSelect",
    label: "省市区级联",
    helpMessage: ["component模式"],
    defaultValue: "140302",
    colProps: {
      span: 12,
    },
  },
  {
    field: "pca1",
    component: "JEllipsis",
    label: "选中值",
    colProps: {
      span: 12,
    },
  },
  {
    field: "pop1",
    component: "Input",
    label: "JPopup示例",
    helpMessage: ["插槽模式"],
    slot: "JPopup",
    colProps: {
      span: 12,
    },
  },
  {
    field: "pop1",
    component: "JEllipsis",
    label: "选中值",
    colProps: {
      span: 12,
    },
  },
  {
    field: "JInputPop",
    component: "JInputPop",
    label: "JInputPop",
    helpMessage: ["component模式"],
    colProps: { span: 12 },
  },
  {
    field: "JInputPop",
    component: "JEllipsis",
    label: "输入值",
    colProps: { span: 12 },
  },
  {
    field: "JTreeDictAsync",
    component: "JTreeDict",
    label: "异步JTreeDict",
    helpMessage: ["component模式"],
    colProps: { span: 12 },
    componentProps: { async: true },
  },
  {
    field: "JTreeDictAsync",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "JSwitch",
    component: "JSwitch",
    label: "JSwitch",
    helpMessage: ["component模式"],
    colProps: { span: 12 },
  },
  {
    field: "JSwitch",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
  {
    field: "JSwitchSelect",
    component: "JSwitch",
    label: "JSwitchSelect",
    helpMessage: ["component模式"],
    colProps: { span: 12 },
    componentProps: { query: true },
  },
  {
    field: "JSwitchSelect",
    component: "JEllipsis",
    label: "选中值",
    colProps: { span: 12 },
  },
]
